home *** CD-ROM | disk | FTP | other *** search
/ Apple Reference & Presen…tion Library 2 (Reseller) / Apple R&P Lib Reseller v2.0.iso / 3-Demos / HyperCard Demos / HyperMovies / CL⁄1 / CL_1 / background_3493.txt < prev    next >
Text File  |  1989-10-27  |  27KB  |  906 lines

  1. -- background: 3493 from stack: in
  2. -- bmap block id: 7817
  3. -- flags: 4000
  4. -- background id: 0
  5. -- name: Region Data
  6. ----- HyperTalk script -----
  7. on ConnectToVax
  8.   global cl1_id, ConnectedToHost
  9.   global connectMode,myHostName,myUserName,myPassword
  10.  
  11.   put "Connecting..." into field "Status"
  12.   if connectMode <> "Simulation" then
  13.     CL1init myHostName,myUserName,myPassword
  14.     put the result into status
  15.     if status is not empty then
  16.       put "Cannot connect" into field "Status"
  17.       return "cannot connect" --exit out of ConnectToVax
  18.     end if
  19.   end if
  20.  
  21.   put "Ready" into status
  22.   put "Opening Database..." into field "Status"
  23.   if connectMode <> "Simulation" then
  24.     CL1send "op;"
  25.     CL1exec
  26.     put CL1status() into status
  27.   end if
  28.  
  29.   put status = "Ready" into ConnectedToHost
  30. end ConnectToVax
  31.  
  32. on DisconnectFromVax
  33.   global cl1_id, ConnectedToHost, connectMode
  34.   put "Disconnecting..." into field "Status"
  35.   if connectMode <> "Simulation" then CL1end
  36.   put "Disconnected" into field "Status"
  37.   put false into ConnectedToHost
  38. end DisconnectFromVax
  39.  
  40. on SendSalesRepData repNum, nuQuota, cardName
  41.   global connectMode
  42.   put "rep_nr,first_name,last_name,rep_office,title,salary,comm," & "quota,sales,supervisor,hire_date,yrs_service" into columnList
  43.   put "staff" into table
  44.  
  45.   if connectMode <> "Simulation" then
  46.     put 8 into quotaColumn
  47.     put "where rep_nr =" && repNum into conditional
  48.  
  49.     ReplaceEntry columnList, table, conditional, quotaColumn, nuQuota, cardName
  50.   else
  51.     put "quota" into quotaColumn
  52.     put "rep_nr" into keyField
  53.     put repNum into keyValue
  54.     S_ReplaceEntry columnList,table,keyfield,keyValue,quotaColumn, nuQuota,cardName
  55.   end if
  56. end SendSalesRepData
  57.  
  58. on SendRegionData regionNum, nuQuota
  59.   global connectMode
  60.   put "office_nr,city,region,manager,quota_ytd,sales_ytd" into columnList
  61.   put "offices" into table
  62.   put "All Regions" into cardName
  63.  
  64.   if connectMode <> "Simulation" then
  65.     put 5 into quotaColumn
  66.     put "where office_nr =" && regionNum into conditional
  67.     ReplaceEntry columnList, table, conditional, quotaColumn, nuQuota, cardName
  68.   else
  69.     put "quota_ytd" into quotaColumn
  70.     put "office_nr" into keyField
  71.     put regionNum into keyValue
  72.     S_ReplaceEntry columnList,table,keyfield,keyValue,quotaColumn, nuQuota,cardName
  73.   end if
  74. end SendRegionData
  75.  
  76. --on ReplaceEntry columnList, table, conditional, quotaColumn, nuQuota, cardName
  77. put the number of items in columnList into numColumns
  78.  
  79. -- update the sales person‚Äôs data in the database
  80. put "update" && table && "set quota =" && nuQuota && conditional & ";" into query
  81.  
  82. CL1send query
  83. CL1send "print $sqlcode;"
  84. CL1exec
  85. get last line of CL1getlist()
  86.  
  87. if it is not empty then
  88.   put "Unable to update data" into field "Status"
  89.   wait 180
  90.   exit to HyperCard
  91. end if
  92. end ReplaceEntry
  93.  
  94.  
  95. --debug: this is the old version of ReplaceEntry; i.e., delete the
  96. --old record then insert the updated version of the record.
  97.  
  98. on ReplaceEntry columnList, table, conditional, quotaColumn, nuQuota, cardName
  99.   put the number of items in columnList into numColumns
  100.  
  101.   -- Get the old row from the database
  102.   put "select" && columnList && "from" && table && conditional & ";" into query
  103.  
  104.   CL1send query
  105.   CL1send "printall;"
  106.   CL1exec
  107.   if CL1status() is not empty then
  108.     put "Unable to receive data" into field "Status"
  109.     wait 180
  110.     exit to HyperCard
  111.   end if
  112.  
  113.   get CL1getlist()
  114.   put empty into dataReceived
  115.   repeat with i = 1 to numColumns
  116.     put stripSpaces (line i of it) into item i of dataReceived
  117.   end repeat
  118.  
  119.   --put empty into last char of dataReceived
  120.   put nuQuota into item quotaColumn of dataReceived
  121.   repeat with i = 1 to the number of items in dataReceived
  122.     put addQuotes (item i of dataReceived) into item i of dataReceived
  123.   end repeat
  124.  
  125.   -- Delete the current record in the table
  126.   put "delete from" && table && conditional & ";" into query
  127.  
  128.   if SendToVax (query, cardName) is not empty then
  129.     put "Record deletion was unsuccessful"
  130.     exit ReplaceEntry
  131.   end if
  132.  
  133.   -- Insert a new record into the table
  134.   put "insert into" && table && "(" & columnList & ") values " & dataReceived & ";" into query
  135.   if SendToVax (query, cardName) is not empty then
  136.     put "Record insertion was unsuccessful"
  137.   end if
  138. end ReplaceEntry
  139.  
  140. on S_ReplaceEntry columnList,table,keyField,keyValue,quotaColumn,nuQuota,cardName
  141.   --simulated version of the ReplaceEntry handler
  142.   global connectMode
  143.   if connectMode <> "Simulation" then return "wrong mode"
  144.  
  145.   put the number of items in columnList into numColumns
  146.  
  147.   --get the record whose keyField contain keyValue in Host
  148.   put card field keyField of card table into keyValueList
  149.   get lineOffset(keyValue,keyValueList)
  150.   if it = 0 then
  151.     answer "Record replace fail: no match found."
  152.     exit S_ReplaceEntry
  153.   end if
  154.  
  155.   put it into myRecordNum
  156.  
  157.   --replace the value in the host database
  158.   put nuQuota into line myRecordNum of card field quotaColumn of card table
  159.  
  160.   --replace the value in the local database
  161.   --put nuQuota into line myRecordNum of card field quotaColumn of --card table
  162. end S_ReplaceEntry
  163.  
  164. function SendToVax query, cardName
  165. global CL1_error
  166. CL1send query
  167. --CL1send "print $sqlcode;"
  168. CL1exec
  169. return CL1_error
  170. end SendToVax
  171.  
  172. on PutDataInFields query, fieldsToFill, cardName
  173.   global connectMode,CL1_error
  174.   if cardName = empty then put the short name of this card into cardName
  175.  
  176.   repeat with i = 1 to the number of items in fieldsToFill
  177.     put empty into field (item i of fieldsToFill) of card cardName
  178.   end repeat
  179.  
  180.   put "Sending query..." into field "Status"
  181.   put query into bkgnd field "Query" of card cardName
  182.   CL1send query
  183.   CL1send "printall;"
  184.   CL1exec
  185.  
  186.   put "Receiving data..." into field "Status"
  187.   put CL1getlist() into myData
  188.   if CL1_error  is not empty then
  189.     put CL1_error into field "Status"
  190.     return CL1_error --get out
  191.   end if
  192.   put 0 into rowCount
  193.   put number of lines of myData into numValues
  194.   put number of items of fieldsToFill into numFields
  195.   repeat with i = 1 to numValues
  196.     put stripSpaces (line i of myData) & "," after field (item (((i-1) mod numFields) + 1) of fieldsToFill) of card cardName
  197.   end repeat
  198.  
  199.   --remove the extra comma‚Äôs
  200.   repeat with i = 1 to numFields
  201.     put empty into last char of field (item i of fieldsToFill) of card cardName
  202.   end repeat
  203.  
  204.   put empty into field "Status"
  205.   CalcPercents cardName
  206. end PutDataInFields
  207.  
  208. on S_PutDataInFields s_query,tableName,recordList,fmFields,toFields,cardName
  209.   --‚Ä¢‚Ä¢ simulated version of PutDataInFields
  210.   global connectMode
  211.   if cardName = empty then put the short name of this card into cardName
  212.  
  213.   repeat with i = 1 to the number of items in toFields
  214.     put empty into field (item i of toFields) of card cardName
  215.   end repeat
  216.  
  217.   put "Sending query..." into field "Status"
  218.   put s_query into bkgnd field "Query" of card cardName
  219.  
  220.   put "Receiving data..." into field "Status"
  221.   put number of items of recordList into numRec
  222.   repeat with j = 1 to numRec
  223.     repeat with i = 1 to number of items in toFields
  224.       get line (item j of recordList) of card field (item i of fmFields) of card tableName
  225.  
  226.       put stripSpaces(it) & "," after field (item i of toFields) of card cardName
  227.     end repeat
  228.   end repeat
  229.   repeat with i = 1 to number of items in toFields
  230.     put empty into last char of field (item i of toFields) of card cardName
  231.   end repeat
  232.  
  233.   put empty into field "Status"
  234.   CalcPercents cardName
  235. end S_PutDataInFields
  236.  
  237. on CalcPercents cardName
  238.   if cardName = empty then put the short name of this card into cardName
  239.   put empty into field "Percent" of card cardName
  240.   repeat with i = 1 to the number of items in field "Sales" of card cardName
  241.     put item i of field "Sales" of card cardName into sales
  242.     put item i of field "Quota" of card cardName into quota
  243.     put formatPercent (sales / quota * 100) into percent
  244.     put "," into last char of percent
  245.     put percent after field "Percent" of card cardName
  246.   end repeat
  247.   put empty into last char of field "Percent" of card cardName
  248. end CalcPercents
  249.  
  250. on openCard
  251.   put empty into bkgnd field "Status"
  252.   put empty into bkgnd field "Query"
  253.   pass openCard
  254. end openCard
  255.  
  256. on closeCard
  257.   hide card field "Card Script"
  258.   hide card field "Card Script Mask"
  259.   set highlight of bkgnd btn "Script" to false
  260.   pass closeCard
  261. end closeCard
  262.  
  263.  
  264.  
  265.  
  266. -- part 1 (field)
  267. -- low flags: 01
  268. -- high flags: 2000
  269. -- rect: left=97 top=37 right=60 bottom=487
  270. -- title width / last selected line: 0
  271. -- icon id / first selected line: 0 / 0
  272. -- text alignment: 0
  273. -- font id: 3
  274. -- text size: 12
  275. -- style flags: 256
  276. -- line height: 16
  277. -- part name: 
  278.  
  279.  
  280. -- part 2 (field)
  281. -- low flags: 00
  282. -- high flags: 2002
  283. -- rect: left=97 top=63 right=85 bottom=489
  284. -- title width / last selected line: 0
  285. -- icon id / first selected line: 0 / 0
  286. -- text alignment: 0
  287. -- font id: 3
  288. -- text size: 10
  289. -- style flags: 0
  290. -- line height: 13
  291. -- part name: rep_nr
  292.  
  293.  
  294. -- part 3 (field)
  295. -- low flags: 00
  296. -- high flags: 2002
  297. -- rect: left=97 top=88 right=110 bottom=489
  298. -- title width / last selected line: 0
  299. -- icon id / first selected line: 0 / 0
  300. -- text alignment: 0
  301. -- font id: 3
  302. -- text size: 10
  303. -- style flags: 0
  304. -- line height: 13
  305. -- part name: quota
  306.  
  307.  
  308. -- part 4 (field)
  309. -- low flags: 00
  310. -- high flags: 2002
  311. -- rect: left=97 top=113 right=135 bottom=489
  312. -- title width / last selected line: 0
  313. -- icon id / first selected line: 0 / 0
  314. -- text alignment: 0
  315. -- font id: 3
  316. -- text size: 10
  317. -- style flags: 0
  318. -- line height: 13
  319. -- part name: sales
  320.  
  321.  
  322. -- part 10 (field)
  323. -- low flags: 00
  324. -- high flags: 2002
  325. -- rect: left=97 top=138 right=160 bottom=488
  326. -- title width / last selected line: 0
  327. -- icon id / first selected line: 0 / 0
  328. -- text alignment: 0
  329. -- font id: 3
  330. -- text size: 10
  331. -- style flags: 0
  332. -- line height: 13
  333. -- part name: office_nr
  334.  
  335.  
  336. -- part 11 (field)
  337. -- low flags: 00
  338. -- high flags: 2002
  339. -- rect: left=97 top=163 right=185 bottom=487
  340. -- title width / last selected line: 0
  341. -- icon id / first selected line: 0 / 0
  342. -- text alignment: 0
  343. -- font id: 3
  344. -- text size: 10
  345. -- style flags: 0
  346. -- line height: 13
  347. -- part name: city
  348.  
  349.  
  350. -- part 12 (field)
  351. -- low flags: 01
  352. -- high flags: 2002
  353. -- rect: left=97 top=188 right=210 bottom=486
  354. -- title width / last selected line: 0
  355. -- icon id / first selected line: 0 / 0
  356. -- text alignment: 0
  357. -- font id: 3
  358. -- text size: 10
  359. -- style flags: 0
  360. -- line height: 13
  361. -- part name: region
  362.  
  363.  
  364. -- part 6 (field)
  365. -- low flags: 01
  366. -- high flags: 2000
  367. -- rect: left=8 top=63 right=85 bottom=98
  368. -- title width / last selected line: 0
  369. -- icon id / first selected line: 0 / 0
  370. -- text alignment: 65535
  371. -- font id: 3
  372. -- text size: 10
  373. -- style flags: 256
  374. -- line height: 13
  375. -- part name: 
  376.  
  377.  
  378. -- part 7 (field)
  379. -- low flags: 01
  380. -- high flags: 2000
  381. -- rect: left=17 top=88 right=110 bottom=98
  382. -- title width / last selected line: 0
  383. -- icon id / first selected line: 0 / 0
  384. -- text alignment: 65535
  385. -- font id: 3
  386. -- text size: 10
  387. -- style flags: 256
  388. -- line height: 13
  389. -- part name: 
  390.  
  391.  
  392. -- part 8 (field)
  393. -- low flags: 01
  394. -- high flags: 2000
  395. -- rect: left=17 top=113 right=135 bottom=98
  396. -- title width / last selected line: 0
  397. -- icon id / first selected line: 0 / 0
  398. -- text alignment: 65535
  399. -- font id: 3
  400. -- text size: 10
  401. -- style flags: 256
  402. -- line height: 13
  403. -- part name: 
  404.  
  405.  
  406. -- part 5 (field)
  407. -- low flags: 80
  408. -- high flags: 2002
  409. -- rect: left=97 top=213 right=235 bottom=486
  410. -- title width / last selected line: 0
  411. -- icon id / first selected line: 0 / 0
  412. -- text alignment: 0
  413. -- font id: 3
  414. -- text size: 10
  415. -- style flags: 0
  416. -- line height: 13
  417. -- part name: percent
  418.  
  419.  
  420. -- part 9 (field)
  421. -- low flags: 80
  422. -- high flags: 2000
  423. -- rect: left=17 top=138 right=160 bottom=98
  424. -- title width / last selected line: 0
  425. -- icon id / first selected line: 0 / 0
  426. -- text alignment: 65535
  427. -- font id: 3
  428. -- text size: 10
  429. -- style flags: 256
  430. -- line height: 13
  431. -- part name: percent label
  432.  
  433.  
  434. -- part 16 (field)
  435. -- low flags: 01
  436. -- high flags: 2000
  437. -- rect: left=7 top=138 right=160 bottom=98
  438. -- title width / last selected line: 0
  439. -- icon id / first selected line: 0 / 0
  440. -- text alignment: 65535
  441. -- font id: 3
  442. -- text size: 10
  443. -- style flags: 256
  444. -- line height: 13
  445. -- part name: 
  446.  
  447.  
  448. -- part 17 (field)
  449. -- low flags: 01
  450. -- high flags: 2000
  451. -- rect: left=17 top=163 right=185 bottom=98
  452. -- title width / last selected line: 0
  453. -- icon id / first selected line: 0 / 0
  454. -- text alignment: 65535
  455. -- font id: 3
  456. -- text size: 10
  457. -- style flags: 256
  458. -- line height: 13
  459. -- part name: 
  460.  
  461.  
  462. -- part 18 (field)
  463. -- low flags: 01
  464. -- high flags: 2000
  465. -- rect: left=17 top=188 right=210 bottom=98
  466. -- title width / last selected line: 0
  467. -- icon id / first selected line: 0 / 0
  468. -- text alignment: 65535
  469. -- font id: 3
  470. -- text size: 10
  471. -- style flags: 256
  472. -- line height: 13
  473. -- part name: 
  474.  
  475.  
  476. -- part 22 (button)
  477. -- low flags: 00
  478. -- high flags: A002
  479. -- rect: left=97 top=301 right=324 bottom=190
  480. -- title width / last selected line: 0
  481. -- icon id / first selected line: 0 / 0
  482. -- text alignment: 1
  483. -- font id: 0
  484. -- text size: 12
  485. -- style flags: 0
  486. -- line height: 16
  487. -- part name: Connect
  488. ----- HyperTalk script -----
  489. on mouseUp
  490.   ConnectToVax
  491.   return the result
  492. end mouseUp
  493.  
  494.  
  495.  
  496. -- part 24 (button)
  497. -- low flags: 00
  498. -- high flags: A002
  499. -- rect: left=295 top=301 right=324 bottom=388
  500. -- title width / last selected line: 0
  501. -- icon id / first selected line: 0 / 0
  502. -- text alignment: 1
  503. -- font id: 0
  504. -- text size: 12
  505. -- style flags: 0
  506. -- line height: 16
  507. -- part name: Disconnect
  508. ----- HyperTalk script -----
  509. on mouseUp
  510.   DisconnectFromVax
  511. end mouseUp
  512.  
  513.  
  514.  
  515. -- part 26 (field)
  516. -- low flags: 01
  517. -- high flags: 2000
  518. -- rect: left=17 top=275 right=299 bottom=98
  519. -- title width / last selected line: 0
  520. -- icon id / first selected line: 0 / 0
  521. -- text alignment: 65535
  522. -- font id: 3
  523. -- text size: 10
  524. -- style flags: 256
  525. -- line height: 13
  526. -- part name: 
  527.  
  528.  
  529. -- part 28 (button)
  530. -- low flags: 80
  531. -- high flags: 8002
  532. -- rect: left=425 top=301 right=324 bottom=486
  533. -- title width / last selected line: 0
  534. -- icon id / first selected line: 0 / 0
  535. -- text alignment: 1
  536. -- font id: 0
  537. -- text size: 12
  538. -- style flags: 0
  539. -- line height: 16
  540. -- part name: %s
  541. ----- HyperTalk script -----
  542. on mouseUp
  543.   CalcPercents ""
  544. end mouseUp
  545.  
  546.  
  547.  
  548. -- part 29 (button)
  549. -- low flags: 00
  550. -- high flags: 0000
  551. -- rect: left=413 top=5 right=56 bottom=488
  552. -- title width / last selected line: 0
  553. -- icon id / first selected line: 0 / 0
  554. -- text alignment: 1
  555. -- font id: 0
  556. -- text size: 12
  557. -- style flags: 0
  558. -- line height: 16
  559. -- part name: Back to Map
  560. ----- HyperTalk script -----
  561. on mouseUp
  562.   visual effect wipe left
  563.   go to card "Map of Regions"
  564. end mouseUp
  565.  
  566.  
  567.  
  568. -- part 30 (button)
  569. -- low flags: 00
  570. -- high flags: A002
  571. -- rect: left=196 top=301 right=324 bottom=289
  572. -- title width / last selected line: 0
  573. -- icon id / first selected line: 0 / 0
  574. -- text alignment: 1
  575. -- font id: 0
  576. -- text size: 12
  577. -- style flags: 0
  578. -- line height: 16
  579. -- part name: Get Data
  580. ----- HyperTalk script -----
  581. on mouseUp
  582.   GetDataForCard
  583. end mouseUp
  584.  
  585.  
  586.  
  587. -- part 31 (field)
  588. -- low flags: 00
  589. -- high flags: 2000
  590. -- rect: left=97 top=138 right=169 bottom=488
  591. -- title width / last selected line: 0
  592. -- icon id / first selected line: 0 / 0
  593. -- text alignment: 0
  594. -- font id: 3
  595. -- text size: 10
  596. -- style flags: 0
  597. -- line height: 13
  598. -- part name: last_name
  599.  
  600.  
  601. -- part 32 (field)
  602. -- low flags: 01
  603. -- high flags: 2000
  604. -- rect: left=17 top=213 right=235 bottom=98
  605. -- title width / last selected line: 0
  606. -- icon id / first selected line: 0 / 0
  607. -- text alignment: 65535
  608. -- font id: 3
  609. -- text size: 10
  610. -- style flags: 256
  611. -- line height: 13
  612. -- part name: 
  613.  
  614.  
  615. -- part 33 (field)
  616. -- low flags: 01
  617. -- high flags: 2000
  618. -- rect: left=97 top=227 right=268 bottom=486
  619. -- title width / last selected line: 0
  620. -- icon id / first selected line: 0 / 0
  621. -- text alignment: 0
  622. -- font id: 3
  623. -- text size: 12
  624. -- style flags: 256
  625. -- line height: 16
  626. -- part name: query
  627.  
  628.  
  629. -- part 34 (field)
  630. -- low flags: 01
  631. -- high flags: 2000
  632. -- rect: left=17 top=229 right=251 bottom=98
  633. -- title width / last selected line: 0
  634. -- icon id / first selected line: 0 / 0
  635. -- text alignment: 65535
  636. -- font id: 3
  637. -- text size: 10
  638. -- style flags: 256
  639. -- line height: 13
  640. -- part name: query label
  641.  
  642.  
  643. -- part 36 (button)
  644. -- low flags: 00
  645. -- high flags: A002
  646. -- rect: left=394 top=301 right=324 bottom=486
  647. -- title width / last selected line: 0
  648. -- icon id / first selected line: 0 / 0
  649. -- text alignment: 1
  650. -- font id: 0
  651. -- text size: 12
  652. -- style flags: 0
  653. -- line height: 16
  654. -- part name: Script
  655. ----- HyperTalk script -----
  656. on mouseUp
  657.   --‚Ä¢
  658.   get the visible of card field "Card Script"
  659.   if it is false then
  660.     show card field "Card Script"
  661.     show card field "Card Script Mask"
  662.     --set highlight of me to true
  663.   else
  664.     hide card field "Card Script"
  665.     hide card field "Card Script Mask"
  666.     --set highlight of me to false
  667.   end if
  668. end mouseUp
  669.  
  670.  
  671.  
  672. -- part 37 (field)
  673. -- low flags: 01
  674. -- high flags: 2002
  675. -- rect: left=97 top=273 right=297 bottom=486
  676. -- title width / last selected line: 0
  677. -- icon id / first selected line: 0 / 0
  678. -- text alignment: 0
  679. -- font id: 3
  680. -- text size: 12
  681. -- style flags: 256
  682. -- line height: 16
  683. -- part name: Status
  684.  
  685.  
  686. -- part 44 (button)
  687. -- low flags: 80
  688. -- high flags: 8004
  689. -- rect: left=294 top=6 right=29 bottom=395
  690. -- title width / last selected line: 0
  691. -- icon id / first selected line: 0 / 0
  692. -- text alignment: 1
  693. -- font id: 0
  694. -- text size: 12
  695. -- style flags: 0
  696. -- line height: 16
  697. -- part name: CL/1
  698. ----- HyperTalk script -----
  699. on mouseUp
  700.   exit mouseUp
  701.  
  702.   -- CL/1 & HyperCard :
  703.   -- Initialize the globals needed by the CL/1 XCMD's and XFCN's. -----
  704.   -- All stacks that use CL/1  MUST have these next statements.  ------
  705.   -- If you are using HyperCard 1.2 or above, you may omit all the
  706.   -- initiailzations, and the declarations are necessary only if
  707.   -- you want to reference a particular global.
  708.   global cl1_id
  709.   global cl1_error
  710.   global cl1_status
  711.   global cl1_status2
  712.   global cl1_message
  713.   put 0 into cl1_id
  714.   put 0 into cl1_error
  715.   put 0 into cl1_status
  716.   put 0 into cl1_status2
  717.   put "" into cl1_message
  718.   --------------------------------------------------------------------
  719.   -- the globals are used as follows :
  720.   -- cl1_id   :  A variable used to store internal information from one
  721.   --             invocation of the XCMD/XFCNs to another.
  722.   -- cl1_error:  Standard CL/1 error return string like "Error".
  723.   --             The values of this, and the following globals are
  724.   --             set only when an error is indicated by the command or
  725.   --             function that was called.  See the individual functions
  726.   --             to determine how errors are indiacted.
  727.   -- cl1status : If cl1err was "Error", then an error occured in the CL/1
  728.   --             language executing on the host system. A DB2 compatible
  729.   --             error number was returned from the host int cl1sts1.
  730.   -- cl1status2: A secondary message number that goes with cl1sts1.
  731.   -- cl1_message:An ascii message about the condition that caused the
  732.   --             host to report an error.
  733.   --------------------------------------------------------------------
  734.   -- The functions :
  735.   -- cl1init "hostname", "username", "password"
  736.   --          This command will establish a connection with the host
  737.   --          system.  It must be called before any other CL/1
  738.   --          XCMD/XFCN.  It will modifiy the global cl1_id, but this
  739.   --          should not be examined by the user.  To test for errors,
  740.   --          check if "the result" is not empty.  If so, then no host
  741.   --          connection has been established.  Otherwise, you're in
  742.   --          business.  The first parameter to cl1init, hostname,
  743.   --          is searched for in the CL/1 local configuration file.
  744.   --          From it, the method of communication to the host is
  745.   --          determined.  If the username parameter is the empty
  746.   --          string, "", then assumption is made that the connection
  747.   --          has been previously logged into.  Otherwise a valid
  748.   --          user (account) name and password are required.
  749.   --------------------------------------------------------------------
  750.   -- cl1end
  751.   --          This command terminates a conversation with the host
  752.   --          system.  It will modifiy the value of cl1_id, and after
  753.   --          calling it, a cl1init is required before any other
  754.   --          CL/1 XCMD/XFCNs may be issued.  No error information
  755.   --          is returned.
  756.   --------------------------------------------------------------------
  757.   -- cl1send "print 1;"
  758.   --          This command sends the string to the host system.  The
  759.   --          parameter string should be a CL/1 statement.  The host
  760.   --          will store this and any other cl1send's until a cl1exec
  761.   --          is issued.  No error information is returned.
  762.   --------------------------------------------------------------------
  763.   -- cl1exec
  764.   --          This command instructs the host to execute the
  765.   --          statement(s) issued sofar via cl1write.  No error
  766.   --          information is returned.
  767.   --------------------------------------------------------------------
  768.   -- The next group of commands/functions are use to retrieve values
  769.   -- from the host system.
  770.   --------------------------------------------------------------------
  771.   -- cl1status
  772.   --          This function returns the current status of the host.
  773.   --          The status could be one of the following, and can be
  774.   --          checked after a cl1exec command :
  775.   --          "Error" :
  776.   --              The host encountered an error during execution of
  777.   --              the CL/1 statements.  The value of cl1_error...
  778.   --              are set when this is returned.  A developer may want
  779.   --              to display cl1_message to get an idea of why the error
  780.   --              occured.
  781.   --         "Ready" :
  782.   --             The host system is "ready", that is, it has no (more)
  783.   --             data to send; it is waiting for more statements.
  784.   --             This the value normally returned to indicate the end
  785.   --             of the data stream produced by "your" CL/1 statements,
  786.   --             and will, of course, be produced immediatly if the
  787.   --             statements do not instruct the host system to send
  788.   --             back data.
  789.   --          "" :
  790.   --             The host system has a value waiting to be received.
  791.   --             A cl1getval call is appropriate.
  792.   ---------------------------------------------------------------------
  793.   -- cl1getval
  794.   --         This function may be called to receive a value when there
  795.   --         is one.  It will return a "Ready" if there is no
  796.   --         data ready, however, it is recommended that the cl1status
  797.   --         function be called prior to cl1getval to determine if data
  798.   --         is ready, and when it is, then cl1getval may be freely
  799.   --         called without checking for errors.
  800.   ---------------------------------------------------------------------
  801.   -- cl1putval 3, "abc", 5, "def", -3, -2
  802.   --         This command will place consective values sent from the
  803.   --         host system into card field 3, then global abc, then
  804.   --         card field 5, then global def.  If an error should occur
  805.   --         then "the result" will be not empty, and the value of
  806.   --         globals cl1_error, cl1_status, cl1_status2, and
  807.   --         cl1_message will contain information about the
  808.   --         error condition.  When using HyperCard versions before 1.2
  809.   --         and putting values into variables, remember they must be
  810.   --         "global", and it also seems necessary that they have
  811.   --         been initialized (to 0 or something) in order for the
  812.   --         xcmd to work.  Also remember to put (double) quotes around
  813.   --         the names of the global variables.  Background fields may
  814.   --         have values sent to them by using a negative number.
  815.   --         This command can be used to fill effeciently and quickly
  816.   --         an entire card, ie:
  817.   --                 cl1putval -1,-2,-3,-4,-5,-6
  818.   --         without writing a hypertalk loop, and without needing
  819.   --         to check the status of cl1 between each field that is set.
  820.   ---------------------------------------------------------------------
  821.   -- cl1getlist
  822.   --         This function will return all the data values that the
  823.   --         CL/1 statements instructed the host to return, in a
  824.   --         carrige return separated string.  Carrige return is used
  825.   --         in case the data returned contains the comma character.
  826.   --         Since this function does not have provisions for
  827.   --         indicating successful completion, the global cl1err will
  828.   --         be cleared on success, or set upon error.  Of course,
  829.   --         since this function is supposed to retrieve all the
  830.   --         values from the data stream, it will not report "Ready"
  831.   --         at end of the data stream.
  832.   ---------------------------------------------------------------------
  833.  
  834.   global jjjj
  835.   put 0 into jjjj
  836.  
  837.   put "Connecting..." into card field 2
  838.  
  839.   cl1init "nivax", "", ""
  840.   -- host name, user name, password
  841.  
  842.   if the result is not empty then
  843.     put "Cannot connect" into card field 2
  844.   else
  845.     put "Opening Database..." into card field 2
  846.  
  847.     cl1send "op;"
  848.     cl1exec
  849.     -- tell the host to execute the "op;" startup procedure
  850.     -- which opens the demo database
  851.  
  852.     put "Query in progress..." into card field 2
  853.  
  854.     cl1send "select city, office_nr from offices;printall;"
  855.     cl1exec
  856.  
  857.     -- the status of the query (success/failure) may be checked
  858.     -- but it is not necessary, since the first attempt to get data
  859.     -- will also return the status
  860.     if cl1status() is not empty then
  861.       put "Oops!" into card field 2
  862.     end if
  863.  
  864.  
  865.     put "Getting Results..." into card field 2
  866.  
  867.     cl1putval 3, 4, 5, 6, 7, "jjjj"
  868.     -- Tell the host to retrieve some values, and
  869.     -- put them into card fields 3-7 and global jjjj.
  870.     -- To retrieve data into backgound fields, specify negative of
  871.     -- background field number.
  872.     -- Errors can be checked by testing "the result" at this point
  873.     -- for example :
  874.     -- if the result is not empty then
  875.     -- error information is in the globals :
  876.     ---- cl1_error, cl1_status, cl1_message.
  877.     -- end if
  878.     put the result into card field 9
  879.  
  880.     put cl1getlist() into card field 8
  881.     -- put the rest of the values, cr separated into one string
  882.     -- and put that into card field 8
  883.     put cl1_error into card field 10
  884.  
  885.     -- For developers of stacks using CL/1, you can use the cl1msg
  886.     -- field to retrieve error messages from the host, which will
  887.     -- help you debug your CL/1 and SQL type of statements.
  888.     -- now let's get a CL/1 error
  889.     -- note: the correct way to get CL/1 to print hello would be
  890.     -- cl1send "print 'hello';"
  891.     cl1send "print hello;"
  892.     cl1exec
  893.     cl1putval "into asdf"
  894.     if the result is not empty then
  895.       put cl1_message into card field 11
  896.     end if
  897.  
  898.     cl1end
  899.     -- disconnect from host
  900.  
  901.     put "Disconnected" into card field 2
  902.   end if
  903. end mouseUp
  904.  
  905.  
  906.